namespace FinMkts.Messaging.Pgm
{
    public enum RmSocketOptionName
    {
        /// <summary>
        /// Set/Query rate (Kb/Sec) + window size (Kb and/or MSec) -- described by SEND_WINDOW below
        /// </summary>
        /// <remarks>Sender only</remarks>
        RateWindowSize = (RmConstants.RM_OPTIONSBASE + 1),

        /// <summary>
        /// Set the size of the next message -- (ULONG)
        /// </summary>
        /// <remarks>Sender only</remarks>
        SetMessageBoundary = (RmConstants.RM_OPTIONSBASE + 2),

        /// <summary>
        /// flush the entire data (window) right now -- not implemented
        /// </summary>
        [System.Obsolete("Not implemented")]
        FlushCache = (RmConstants.RM_OPTIONSBASE + 3),

        /// <summary>
        /// Set or Query the window advance method on the sender -- methods enumerated in <see cref="RmWindowAdvanceMethod"/>
        /// </summary>
        /// <remarks>Sender only</remarks>
        SenderWindowAdvanceMethod = (RmConstants.RM_OPTIONSBASE + 4),

        /// <summary>
        /// get sender statistics
        /// </summary>
        /// <remarks>Sender only</remarks>
        SenderStatistics = (RmConstants.RM_OPTIONSBASE + 5),

        /// <summary>
        /// allow a late-joiner to NAK any packet upto the lowest sequence Id
        /// </summary>
        /// <remarks>Sender only</remarks>
        LateJoin = (RmConstants.RM_OPTIONSBASE + 6),

        /// <summary>
        /// set IP multicast outgoing interface
        /// </summary>
        /// <remarks>Sender only</remarks>
        SetSendInterface = (RmConstants.RM_OPTIONSBASE + 7),

        /// <summary>
        /// add IP multicast incoming interface
        /// </summary>
        /// <remarks>Receiver only</remarks>
        AddReceiveInterface = (RmConstants.RM_OPTIONSBASE + 8),

        /// <summary>
        /// delete IP multicast incoming interface
        /// </summary>
        /// <remarks>Receiver only</remarks>
        DeleteReceiveInterface = (RmConstants.RM_OPTIONSBASE + 9),

        /// <summary>
        /// Set/Query the Window's Advance rate (has to be less between 15 and 25)
        /// </summary>
        /// <remarks>Sender only</remarks>
        SendWindowAdvRate = (RmConstants.RM_OPTIONSBASE + 10),

        /// <summary>
        /// Instruct to use parity-based forward error correction schemes
        /// </summary>
        /// <remarks>Sender only</remarks>
        UseFec = (RmConstants.RM_OPTIONSBASE + 11),

        /// <summary>
        /// Set the time-to-live of the multicast packets, i.e. the number of router hops before the packet dies
        /// </summary>
        /// <remarks>Sender only</remarks>
        SetTimeToLive = (RmConstants.RM_OPTIONSBASE + 12),

        /// <summary>
        /// Get receiver statistics
        /// </summary>
        /// <remarks>Receiver only</remarks>
        ReceiverStatistics = (RmConstants.RM_OPTIONSBASE + 13),

        /// <summary>
        /// Specifies whether a high bandwidth LAN (100Mbps+) connection is used
        /// </summary>
        /// <remarks>Receiver only</remarks>
        HighSpeedIntranet = (RmConstants.RM_OPTIONSBASE + 14),
    }
}